<html>
<head>
  <title>Evernote Export</title>
  <basefont face="微软雅黑" size="2" />
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <meta name="exporter-version" content="Evernote Windows/304720 (zh-CN, DDL); Windows/6.1.7600 (Win64);"/>
  <style>
    body, td {
      font-family: 微软雅黑;
      font-size: 16pt;
    }
  </style>
</head>
<body>
<a name="771"/>

<div>
<span><div><b>工作区</b>：（Working Directory）就相当于是工作开发的目录</div><div><b>版本库</b>：（Repository）工作区的一个隐藏目录.git，是Git的版本库。</div><div><br/></div><div>版本库是Git托管项目的核心，存了很多东西，最重要的是<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">暂存区stage(index)</span>，还有Git为我们自动创建的<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">第一分支master</span>，以及指向master的一个指针叫<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">HEAD</span></div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><br/></span></div><div style="box-sizing: border-box; padding: 8px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902);"><div><span style="font-family: Monaco, Menlo, Consolas, 'Courier New', monospace;"><span style="color: rgb(255, 0, 0);"><b>原理图：</b></span></span></div><div>               <img src="git_about_tips_files/Image.png" type="image/png" style="height: auto;"/></div><ul><li>开发中文件的修改都发生在工作区</li><li><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">git diff</span>是查看<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">工作区</span>的修改情况
<ul><li>当暂存区为空时（此文件没有添加到暂存区），是工作区与当前版本号的对比</li><li>当暂存区不为空时（此文件已经存在于暂存区），是工作区与暂存区的对比</li></ul></li><li>用<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">git checkout</span>告诉Git，丢弃工作区的修改
<ul><li>暂存区没有文件时，撤销修改回到和版本库的状态一样</li><li>暂存区有此文件时，撤销工作区修改回到和暂存区的状态一样</li></ul></li><li>通过git add把需要提交的文件添加到暂存区中（可用git reset HEAD &lt;file&gt;从暂存区删除要提交的修改，但工作区修改不会删除），</li><li><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">git status</span>是查看<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">暂存区</span>stage的状态
<ul><li>为空时
<ul><li>工作区在当前版本上无修改时：</li></ul></li></ul></li></ul><div>                    <img src="git_about_tips_files/Image [1].png" type="image/png" style="height: auto;"/></div><ul><li style="display:inline;list-style:none;"><ul><li style="display:inline;list-style:none;"><ul><li>工作区在当前版本上有修改时：</li></ul></li></ul></li></ul><div>                    <img src="git_about_tips_files/Image [2].png" type="image/png" style="height: auto;"/></div><ul><li style="display:inline;list-style:none;"><ul><li>不为空时
<ul><li>工作区的修改全部都已git add添加到暂存区时：</li></ul></li></ul></li></ul><div>                    <img src="git_about_tips_files/Image [3].png" type="image/png" style="height: auto;"/></div><ul><li style="display:inline;list-style:none;"><ul><li style="display:inline;list-style:none;"><ul><li>工作区有修改没git add添加到暂存区时：</li></ul></li></ul></li></ul><div>                    <img src="git_about_tips_files/Image [4].png" type="image/png" style="height: auto;"/></div><div>          git status是会查看暂存区的状态，<span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;">全部的修改</span>都会检测到，</div><ul><li style="display:inline;list-style:none;"><ol><li style="display:inline;list-style:none;"><ol><li>工作区的修改有无添加到暂存区</li><li>暂存区有无可commit的修改</li></ol></li></ol></li><li>通过git commit一次性把暂存区的所有内容提交到当前分支，仓库版本号commit id更新</li><li>每次git commit都是一次性提交同时清空掉暂存区stage</li><li>git commit之后只是更新了本地仓库，并没有改变远程服务器的仓库</li><li>只有git pull上传到远程服务器上，才会更新远程服务器的仓库版本</li></ul></div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><br/></span></div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><br/></span></div><div style="box-sizing: border-box; padding: 8px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902);"><div><span style="color: rgb(255, 0, 0);"><b>Git特点：</b></span></div><div>          Git管理的不是文件，而是修改，当你在工作区所做的修改先git add添加到暂存区后在git commit提交时修改才会生效，如果只是修改没有git add先添加到暂存区，git commit是不会提交你做的修改的，所以Git管理的是添加到暂存区里的修改。</div><div>          Git是分布式版本控制系统，同一个Git仓库，可以分布在不同机器上，且每台机器的版本库都是一样的，无主次之分。</div><div>          （github就是提供远程Git仓库托管服务的网站）</div></div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><br/></span></div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><br/></span></div><div><br/></div><div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><b>本地仓库与远程Github传输设置</b>:</span>（<span style="color: rgb(255, 0, 0);">SSH key</span>设置）</div><div>     本地Git仓库和Github仓库之间的传输是通过SSH加密的，所以本地Git仓库需要创建传输的SSH的Key，然后把这Key也告诉给远程github仓库，两者就可以进行正常的传输了。</div><ol><li>本地用户主目录下.ssh目录里确保有id_rsa和id_rsa.pub这两个文件    
<ul><li>没有的话按下面操作 
<ol><li style="display:inline;list-style:none;"><ul><li>开始里搜索Git Bash运行。</li><li>执行ssh-keygen -t rsa -C &quot;github账号的邮箱地址&quot;           <img src="git_about_tips_files/Image [5].png" type="image/png" style="height: auto;"/></li></ul></li></ol></li></ul></li><li>github上settings里设置SSH key
<ul><li>Title随意取，把id_rsa.pub的文字复制贴在Key框里，添加</li><li><img src="git_about_tips_files/Image [6].png" type="image/png" style="height: auto;"/></li></ul></li></ol></div><div>     只有设置了SSH Key，github才能识别出是你推送的提交，而不是别人篡改的，github上也可以设置多个SSH Key，相当于授权给多个可以推送提交的终端。</div><div><br/></div><div><br/></div><div><br/></div><div><span style="background-color: rgb(255, 250, 165);-evernote-highlight:true;"><b>Git支持多种协议</b></span></div><div>克隆远程Git仓库地址的时候，可以看到GitHub给出的地址不止一个，除以下的两种协议以外，Git还支持多种协议。</div><div><img src="git_about_tips_files/Image [7].png" type="image/png" style="height: auto;"/><img src="git_about_tips_files/Image [8].png" type="image/png" style="height: auto;"/></div><div><br/></div><div>         </div></span>
</div></body></html> 